Unang Hakbang sa Quantum Computing
- Difficulties: Beginner
- QPU time usage: 11s
Maligayang pagdating, mga hacker! Tuwang-tuwa kaming makasama ka sa workshop. Ang pangunahing layunin ng panimulang hands-on na ito ay ihanda ka sa iyong quantum journey sa pamamagitan ng 1) paggabay kung paano i-install ang qiskit 2) paano gumawa ng IBM Cloud account at maghanda ng api_key at crn upang gumamit ng tunay na quantum computer at 3) gumawa ng iyong unang quantum circuit, 4) lutasin ang isang quantum state quiz at 5) Patakbuhin ang iyong mga circuit sa tunay na quantum computer at i-plot ang resulta.
1. Una sa lahat: Qiskit
Ano ang Qiskit
Ang Qiskit SDK ay isang high performance software stack na ginawa upang tulungan ang mga developer at researcher na samantalahin ang buong kapangyarihan ng quantum computers sa utility scale at higit pa. Sa core nito ay ang Qiskit SDK, isang open source software development kit para sa pagtatrabaho sa quantum computers sa antas ng pinalawak na quantum circuits. Operators at primitives. Pinapahintulutan ng Qiskit SDK ang sinuman na makakuha ng optimal performance mula sa tunay na quantum computers gamit ang kanilang ginustong computing environment.
Higit pa sa SDK, kasama rin sa Qiskit ang isang suite ng high performance tools at services tulad ng Qiskit Runtime Service, na nagbibigay-daan sa optimized computations sa IBM quantum computers sa pamamagitan ng cloud gamit ang primitives na namamahala sa error mitigation. Ang Qiskit Transpiler service, na nagbibigay ng state of the art heuristic at AI powered methods na nagpapabuti sa performance para sa karaniwang mga quantum circuit optimization tasks.
Ang Qiskit functions, isang catalog ng IBM at third party services na nagpapadali sa pag-optimize ng workloads at paggamit ng Qiskit para sa industry use cases. Kung ikaw ay quantum software developer, quantum experimentalist, computational scientist, o naghahanap lang upang magsimula, ang modular at flexible framework ng Qiskit ay nagpapahintulot sa iyong magtrabaho sa abstraction level na pinakaangkop sa iyong mga pangangailangan.
Ang Qiskit ay idinisenyo para sa extensibility at customization, kaya maaari kang kumuha ng industry leading performance at humawak ng mga bagong uri ng problema. Ang isang high performance code base ay nangangahulugang ang Qiskit SDK ay gumagana nang mas mabilis, gumagamit ng mas kaunting memory, at naghahatid ng mas mahusay na resulta kaysa dati. At ipinapakilala ka rin ng Qiskit sa isang malaking komunidad ng mga user at developer na sabik na tanggapin ka at tumulong na sagutin ang iyong mga tanong. Unang inilunsad noong 2019, ang Qiskit advocate program ay isang global, community-centered initiative na nag-rerecruit ng mga quantum computing professionals at enthusiasts mula sa buong mundo. Sa paglipas ng mga taon, naging kinikilalang mga lider ang mga advocate sa quantum community. Gusto mo bang maging susunod na quantum leader? Huwag mag-atubiling mag-apply - dito
I-install ang Qiskit
Una, suriin na ang bersyon ng Python na ginagamit mo sa iyong environment ay python>=3.10, upang matiyak na ito ay compatible sa pinakabagong Qiskit version na gagamitin natin
from platform import python_version
print(python_version())
Kung hindi, puwede mo itong i-upgrade gamit ang tool na gusto mo. Kung hindi ka sigurado kung paano, narito ang ilang mungkahi:
- MacOS: Homebrew
- Linux:
sudo apt-get update
May detalyadong gabay kung paano i-upgrade ang Python depende sa iyong OS dito: How to update Python
Para sa karagdagang impormasyon, tingnan ang QGSS (Qiskit Global Summer School) 2025 wiki: https://github.com/qiskit-community/qgss-2025/wiki/Jupyter-Notebook-Environment-(Local-and-Online)
Maaari mong i-verify ang iyong installation sa pamamagitan ng pagpapatakbo ng cell sa ibaba. Kung tama ang installation, ibabalik nito ang qiskit version.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit
%pip install 'qiskit[visualization]'
%pip install qiskit-ibm-runtime
%pip install qiskit-aer
import qiskit
print(f"Qiskit version: {qiskit.__version__}")
Troubleshooting
Kung nagka-error ang nakaraang cell, puwede kang mag-install ng Qiskit sa loob ng virtual environment (dalawang pamamaraan ang iminumungkahi sa ibaba). Kung walang error, laktawan mo na lang ang cell na ito at magpatuloy sa susunod.
Dito ay dalawang paraan para mag-set up ng virtual environment para i-install ang Qiskit.
- Gamit ang venv, tulad ng nakapaliwanag sa Qiskit installation guide.
- Gamit ang conda, tulad ng ipinakita sa video na ito ng Coding with Qiskit.
2. I-set up ang iyong IBM Cloud account
Para gumamit ng tunay na quantum computer, kailangan mo ng api key — ang pangunahing ticket mo para makapasok sa cloud — at ng crn — isang token na magbibigay sa iyo ng access sa iyong mga resources sa pamamagitan ng iyong account.
I-set up ang iyong account ganito:
- Pumunta sa IBM Quantum® Platform.
- Pumunta sa kanang sulok sa itaas (tulad ng makikita sa larawan sa itaas), gumawa ng iyong API token, at kopyahin ito sa ligtas na lugar.
- Sa susunod na cell, palitan ang
deleteThisAndPasteYourAPIKeyHereng iyong API key. - Pumunta sa kaliwang sulok sa ibaba (tulad ng makikita sa larawan sa itaas) at gumawa ng instance. Siguraduhing piliin ang open plan.
- Pagkatapos gawin ang instance, kopyahin ang CRN code nito. Puwede kang mag-refresh para makita ang instance.
- Sa cell sa ibaba, palitan ang
deleteThisAndPasteYourCRNHereng iyong CRN code.
Tingnan ang gabay na ito para sa mas detalyadong impormasyon kung paano i-set up ang iyong IBM Cloud® account.
⚠️ Tandaan: Ituring ang iyong API key na parang isang secure na password. Tingnan ang Cloud setup guide para sa karagdagang impormasyon tungkol sa paggamit ng iyong API key sa ligtas at hindi ligtas na mga environment.
Dagdag pa, kung miyembro ka ng IBM partner network university, gamitin ang email address ng iyong institusyon para sa iyong IBM ID upang matanggap ang partner benefit.
from qiskit_ibm_runtime import QiskitRuntimeService
# Save your API key and crn and have access to the quantum computers
your_api_key = "deleteThisAndPasteYourAPIKeyHere"
your_crn = "deleteThisAndPasteYourCRNHere"
QiskitRuntimeService.save_account(
channel="ibm_cloud",
token=your_api_key,
instance=your_crn,
overwrite=True
)
# Check that the account has been saved properly
service = QiskitRuntimeService()
service.saved_accounts()
# See backends you can use
service.backends()
3. Ang unang Quantum Circuit mo
Quantum circuits
Ang pangunahing yunit ng Qiskit ay ang quantum circuit, na isang serye ng mga instruksyon na magagamit ng quantum computer para magtrabaho sa quantum bits ng impormasyon, kilala rin bilang qubits. Ang mga qubit na ito ay may espesyal na katangian na nagbibigay-daan sa mga quantum computer na harapin ang mga problema nang naiiba kaysa sa iyong laptop o iPhone. Mabilis na sumusulong ang Qiskit bilang teknolohiya — maaari ka pa ring manu-manong mag-disenyo ng iyong mga quantum circuit at magpasya kung paano ito patakbuhin (at maraming magagandang dahilan para gawin ito), ngunit nagbibigay rin ang IBM Quantum ng mga tool na nagpapasimple ng proseso. Para sa layunin ng pagkatuto, magdidisenyo tayo ng isang simpleng circuit at ipapatakbo ito sa isang simulator.
Mabilis lang nating tataklawin ang overview na ito dahil, totoo naman, maraming oras ang maaaring gumastos sa pagsasalamin ng mga basics ng quantum information at computation. Sa katunayan, nagawa na ito ng IBM Quantum sa pamamagitan ng isang written course at isang serye ng video lectures na nakatuon sa paksa. Kung kailangan mo ng refresher, tingnan mo sila!
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.visualization import plot_state_qsphere
from qiskit_aer import AerSimulator
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.visualization import array_to_latex
from qiskit.visualization import plot_distribution
import numpy as np
from numpy import sqrt
Mga Pangunahing Operasyon sa Qubits at Measurements
Pagsusulat ng mga single-qubit states
Simulan nating tingnan ang isang single qubit. Ang pangunahing pagkakaiba ng classical bit, na puwedeng kumuha ng halaga na 0 at 1 lamang, ay ang quantum bit, o qubit, ay maaaring nasa mga state na , , pati na rin ang isang linear combination ng dalawang state na ito. Ang katangiang ito ay kilala bilang superposition, at nagbibigay-daan sa atin na isulat ang pinaka-pangkalahatang state ng isang qubit bilang:
Kung susukatin natin ang state ng qubit na ito, mahahanap natin ang resulta na na may posibilidad na , at ang resulta na na may posibilidad na . Tulad ng makikita mo, ang kabuuang posibilidad ay , ibig sabihin palagi nating mahahanap ang o — walang ibang posibleng resulta.
Bukod sa , puwede mong napansin ang isa pang parameter sa itaas. Ang variable na ay nagpapakita ng relative quantum phase sa pagitan ng dalawang state na at . Tulad ng matutuklasan natin sa paglaon, ang relative phase na ito ay napakahalaga. Sa ngayon, sapat na itong malaman: ang quantum phase ang nagbibigay-daan sa interference sa pagitan ng mga quantum state, na nagpapahintulot sa atin na magsulat ng mga quantum algorithm para sa paglutas ng mga partikular na gawain.
Pag-visualize ng mga quantum state
Sa buong ehersisyong ito, ginagamit natin ang tinatawag na qsphere para ma-visualize ang mga quantum state. Ganito ang hitsura ng qsphere para sa mga state na at . Pansinin na ang pinakamataas na bahagi ng sphere ay kumakatawan sa state na , habang ang ibaba ay kumakatawan sa .
#visualize |0>
sv=Statevector([1, 0])
plot_state_qsphere(sv)
Maaari kang gumawa ng parehong QSphere gamit ang isang quantum circuit. Ang statevector na ginagamit dito ay mula sa state. Sa Qiskit, ang qubit ay ini-initialize sa state. Subukang patakbuhin ang circuit sa ibaba at tingnan kung makukuha mo ang parehong QSphere.
qc1 = QuantumCircuit(1)
sv=Statevector(qc1)
plot_state_qsphere(sv)
Ngayon ibisualisa naman natin ang na estado.
Hindi na dapat nakakagulat na ang superposition state na may quantum phase na at posibilidad na (ibig sabihin, pantay na pagkakataon ng pagsukat ng 0 at 1) ay ipinapakita sa qsphere na may dalawang punto. Gayunpaman, pansinin din na ang laki ng mga bilog sa dalawang punto ay mas maliit kaysa nang mayroon lang tayong at sa itaas. Ito ay dahil ang laki ng mga bilog ay proporsyonal sa posibilidad ng pagsukat ng bawat isa, na ngayon ay nabawasan ng kalahati.
#visualize 1/sqrt(2)|0> + 1/sqrt(2)|1>
sv=Statevector([1/sqrt(2), 1/sqrt(2)])
plot_state_qsphere(sv)
Sa kaso ng mga superposition state kung saan ang quantum phase ay hindi zero, ang qsphere ay nagbibigay-daan sa atin na ma-visualize ang phase na iyon sa pamamagitan ng pagbabago ng kulay ng kaukulang blob. Halimbawa, ang state na may (degrees) at posibilidad na ay ipinapakita sa qsphere sa ibaba.
sv=Statevector([1/sqrt(2), 1/sqrt(2)*1j])
plot_state_qsphere(sv)
Pag-manipulate ng mga qubit
Ang mga qubit ay nima-manipulate sa pamamagitan ng pag-apply ng mga quantum gate. Balikan natin ang overview ng iba't ibang gate na titingnan natin sa mga susunod na ehersisyo.
Una, ilarawan natin kung paano natin mababago ang halaga ng para sa ating pangkalahatang quantum state. Para gawin ito, gagamit tayo ng dalawang gate:
-
-gate: Ang gate na ito ay nagpapalit-palit sa pagitan ng dalawang state na at . Ang operasyong ito ay katulad ng klasikal na NOT gate. Dahil dito, ang -gate ay minsan tinatawag na bit flip o NOT gate. Sa matematika, binabago ng gate ang sa , kaya lalo na mula 0 papuntang 1, at kabaligtaran.
-
-gate: Ang gate na ito ay nagbibigay-daan sa atin na lumipat mula sa state na papunta sa state na . Ang state na ito ay kilala rin bilang . Sa matematika, ibig sabihin nito ang paglipat mula sa papunta sa . Dahil ang panghuling state ng qubit ay isang superposition ng at , ang Hadamard gate ay kumakatawan sa isang tunay na quantum operation.
Pansinin na parehong nagbago ang halaga ng ng dalawang gate, ngunit hindi ang . Sa kabutihang palad, medyo madali lang na ma-visualize ang aksyon ng mga gate na ito sa pamamagitan ng pagtingin sa pigura sa ibaba.
Kapag nasa state na tayo ng , maaari na tayong baguhin ang quantum phase sa pamamagitan ng pag-apply ng iba pang mga gate. Halimbawa, ang gate ay nagdadagdag ng phase na degrees sa , habang ang gate ay nagdadagdag ng phase na degrees sa . Para ibawas ang phase na degrees, maaari tayong mag-apply ng gate, na binabasa bilang S-dagger at karaniwang isinusulat bilang sdg. Sa wakas, mayroon ding gate na nag-a-apply ng sunud-sunod na at gate.
Maaari kang mag-eksperimento sa mga gate na , , , , at para masanay sa iba't ibang operasyon at kung paano nila naaapektuhan ang state ng isang qubit. Magagawa mo ito sa pamamagitan ng pagbisita sa Circuit Composer at pagsisimula ng aming circuit widget. Pagkatapos bisitahin ang circuit composer, pumili ng gate na ila-apply sa isang qubit, at pagkatapos ay piliin ang qubit (sa mga unang halimbawa, ang tanging qubit na mapipili ay qubit 0). Panoorin kung paano nagbabago ang kaukulang state sa bawat gate, kasama ang paglalarawan ng state na iyon. Magbibigay din ito sa iyo ng code na gumagawa ng kaukulang quantum circuit sa Qiskit.
Kung gusto mong matuto pa tungkol sa paglalarawan ng mga quantum state, Pauli operators, at iba pang single-qubit gate, tingnan ang Quantum Information ng Single System sa Basics of Quantum Information Course ni John Watrous.
Mga Pagsasanay: Quantum Circuits Gamit ang Single-Qubit Gates
Mayroon ditong apat na maliit na pagsasanay para maabot ang iba't ibang state sa qsphere. Maaari mong lutasin ang mga ito gamit ang circuit composer at i-copy-paste ang code nito sa kaukulang mga cell para gumawa ng mga quantum circuit, o direkta kang makakapaglagay ng kombinasyon ng mga sumusunod na linya ng code sa programa para i-apply ang iba't ibang gate:
qc.x(0) # bit flip qc.y(0) # bit and phase flip qc.z(0) # phase flip qc.h(0) # superpostion qc.s(0) # quantum phase rotation by pi/2 (90 degrees) qc.sdg(0) # quantum phase rotation by -pi/2 (90 degrees)
Ang '(0)' ay nagpapakita na ina-apply natin ang gate na ito sa qubit na 'q0', na siyang una (at sa kasong ito ang tanging) qubit.
Subukang makamit ang ibinigay na state sa qsphere sa bawat isa sa mga sumusunod na ehersisyo.
i) Magsimula tayo sa pamamagitan ng pagsasagawa ng bit flip. Ang layunin ay maabot ang state na simula sa state na .
def create_circuit():
qc = QuantumCircuit(1)
#
#
# FILL YOUR CODE IN HERE
#
#
return qc
# check solution
qc2 = create_circuit()
state = Statevector(qc2)
plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True)
ii) Susunod, gumawa tayo ng superposition. Ang layunin ay maabot ang state na .
def create_circuit2():
qc = QuantumCircuit(1)
#
#
# FILL YOUR CODE IN HERE
#
#
return qc
qc3 = create_circuit2()
state = Statevector(qc3)
plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True)
iii) Pagsamahin natin ang dalawa. Ang layunin ay maabot ang state na .
Kaya mo bang pagsamahin ang dalawang nakaraang gawain para makuha ang solusyon?
def create_circuit3():
qc = QuantumCircuit(1)
#
#
# FILL YOUR CODE IN HERE
#
#
return qc
qc4 = create_circuit3()
state = Statevector(qc4)
plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True)
iv) Sa wakas, lumipat tayo sa mga complex number. Ang layunin ay maabot ang state na
def create_circuit4():
qc = QuantumCircuit(1)
#
#
# FILL YOUR CODE IN HERE
#
#
return qc
qc5 = create_circuit4()
state = Statevector(qc5)
plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True)
4. Quantum Quiz na may Multi-Qubit Gates
Mahusay! Ngayon na naiintindihan mo na ang mga single-qubit gate, tingnan natin ang mga gate na nagpapatakbo sa maramihang qubit. Dito ay hihilingin sa iyo na lutasin ang 4 quantum state quizzes sa pamamagitan ng pagsasama ng mga single-qubit gate at multi-qubit gate. Ang mga pangunahing gate sa dalawang qubit ay ang mga sumusunod:
qc.cx(c,t) # controlled-X (= CNOT) gate with control qubit c and target qubit t qc.cz(c,t) # controlled-Z gate with control qubit c and target qubit t qc.swap(a,b) # SWAP gate that swaps the states of qubit a and qubit b
Kung gusto mong matuto pa tungkol sa iba't ibang multi-qubit gate at ang kanilang mga relasyon, bisitahin ang Quantum Information ng multiple systems, mula sa Basics of Quantum Information Course ni John.
Pansinin na para sa dalawang qubit, ang pangkalahatang state ay nasa anyo na , kung saan ang , , , at ay mga complex number na ang squared na absolute values ay nagbibigay ng posibilidad ng pagsukat ng kaukulang state; halimbawa, ang ay ang posibilidad na matapos sa state na '0' sa parehong qubit. Ibig sabihin nito, maaari na tayong magkaroon ng hanggang apat na punto sa qsphere.
Sisimulan natin sa canonical na two-qubit gate, ang controlled-NOT (kilala rin bilang CNOT o CX) gate. Dito, tulad ng lahat ng controlled two-qubit gate, ang isang qubit ay tinutukoy bilang "control", habang ang isa ay tinatawag na "target". Kung ang control qubit ay nasa state na , inilalapat nito ang identity gate sa target, ibig sabihin walang operasyong ginagawa. Sa kabilang banda, kung ang control qubit ay nasa state na , isang X-gate ang isinasagawa sa target qubit. Kaya naman, kapag ang parehong qubit ay nasa isa sa dalawang klasikal na state, o , ang CNOT gate ay limitado sa mga klasikal na operasyon.
Ang sitwasyong ito ay dramatikong nagbabago kapag una nating ina-apply ang Hadamard gate sa control qubit, na inilalagay ito sa superposition state na . Ang aksyon ng CNOT gate sa hindi klasikal na input na ito ay maaaring makagawa ng mga lubhang entangled na state sa pagitan ng control at target qubit. Kung ang target qubit ay nasa state sa simula, ang nagresultang state ay tinutukoy ng , at isa ito sa tinatawag na Bell states.
i) Buuin ang Bell state na .
Para sa state na ito, magkakaroon tayo ng posibilidad na sa pagsukat ng "00" at posibilidad na sa pagsukat ng "11". Kaya naman, ang mga resulta ng parehong qubit ay ganap na magkakaugnay.
def create_circuit5():
qc = QuantumCircuit(2)
#
#
# FILL YOUR CODE IN HERE
#
#
return qc
qc6 = create_circuit5()
state = Statevector(qc6) # determine final state after running the circuit
display(array_to_latex(state))
display(plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True))
qc6.draw(output='mpl') # we draw the circuit
Susunod, subukang gumawa ng state ng ganap na magkasalungat na qubit. Pansinin ang minus sign dito, na nagpapakita ng relative phase sa pagitan ng dalawang state.
ii) Buuin ang Bell state na .
def create_circuit6():
qc = QuantumCircuit(2)
#
#
# FILL YOUR CODE IN HERE
#
#
return qc
qc7 = create_circuit6()
state = Statevector(qc7) # determine final state after running the circuit
display(array_to_latex(state))
display(plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True))
qc7.draw(output='mpl') # we draw the circuit
iii) Ibinibigay sa iyo ang quantum circuit na inilalarawan sa function sa ibaba. I-swap ang mga state ng una at pangalawang qubit para makuha ang QSphere na ito.
def create_circuit7():
qc = QuantumCircuit(2)
qc.rx(np.pi/3,0)
qc.x(1)
return qc
qc8 = create_circuit7()
#
#
# FILL YOUR CODE IN HERE
#
#
state = Statevector(qc8) # determine final state after running the circuit
display(array_to_latex(state))
display(plot_state_qsphere(state, show_state_labels=True, show_state_phases = True, use_degrees = True))
qc8.draw(output='mpl') # we draw the circuit